export type ChangeTester<O extends {}> = Record<keyof O, (a: O, b: O) => boolean>;
export function make_tester<O extends {}>(testers: ChangeTester<O>): (a: O, b: O) => boolean {
  const fns = Object.keys(testers).map(k => testers[k as keyof O])
  return (a, b) => fns.some(v => v(a, b))
}